﻿namespace Ficharts.Net
{
    using System.ComponentModel;

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public abstract class SeriesBase
    {
        /// <summary>
        /// 序列的x数据字段，一条数据记录中包含多个字段，
        /// 这些数据可被多个序列采用，
        /// 但单个序列通常仅需要两个字段的数据：x,y字段， 
        /// xField 定义了每条数据记录中用于此序列的x字段
        /// </summary>
        [ColumnElement]
        public string XField { get; set; }

        /// <summary>
        /// 序列的y数据字段，一条数据记录中包含多个字段，但序列通常仅需要两个字段的数据：x,y字段， yField 定义了每条数据记录中用于此序列的y字段
        /// </summary>
        [ColumnElement]
        public string YField { get; set; }

        /// <summary>
        /// 序列的颜色数据字段，与属性 color 不同的是颜色字段会影响到序列中每个数据节点的颜色，序列会根据颜色字段从数据记录中提取每个节点的颜色。默认为 null ，系统自动分配节点颜色
        /// </summary>
        [ColumnElement]
        public string ColorField { get; set; }

        /// <summary>
        /// 序列名称，多序列或者混合图表时用以区分不同序列。会在图例，工具提示中用到。
        /// </summary>
        [ColumnElement]
        public string SeriesName { get; set; }

        /// <summary>
        /// 序列颜色，用来区分不同序列。默认系统会对每条序列自动分配颜色，如果要强调某条序列可以通过此属性设置序列专有颜色。
        /// </summary>
        [ColumnElement]
        public string Color { get; set; }

        /// <summary>
        /// 序列x轴的id, 默认系统自动分配坐标轴，当定义多坐标轴时需要制定序列以那个轴为自己的x轴。
        /// </summary>
        [ColumnElement]
        public string XAxis { get; set; }

        /// <summary>
        /// 序列y轴的id, 默认系统自动分配坐标轴，当定义多坐标轴时需要制定序列以那个轴为自己的y轴。
        /// </summary>
        [ColumnElement]
        public string YAxis { get; set; }

        /// <summary>
        /// 单个序列下，序列中节点是否采用相同颜色，默认 true , 整个序列的颜色都是统一的。例如在柱状图中如果设置为 false 时每个柱体颜色均由系统分配。但在多序列时此属性无效，每条序列颜色独立统一。
        /// </summary>
        [ColumnElement]
        public bool? SingleColor { get; set; }

        /// <summary>
        /// 数值显示方式，none为不显示，vertical为垂直方式显示。不同序列默认参数不同，对于柱状图和条形图normal表示在柱体外部显示，innner表示在柱体内部显示。
        /// </summary>
        [ColumnElement]
        public LabelDisplayMode? LabelDisplay { get; set; }

        [ColumnElement]
        public string Title { get; set; }
    }
}
